﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using vensoft.BussinesLogic;
using vensoft.Entities;

namespace vensoft.Win32
{
    public partial class frmGestionarPedido : Form
    {
        IPedidoBL pedidoBL;
        IEnlazarPedidoyDetalle enlazar;
        IProveedorBL proveedorBL;
        
        public frmGestionarPedido()
        {
            InitializeComponent();
            
        }
        
        private void btnNuevoPedido_Click(object sender, EventArgs e)
        {
            frmRegistrarPedido registrar = new frmRegistrarPedido();
            registrar.UsuarioActual = UsuarioActual;
            registrar.Show();
        }
        public Int32 estadoCancelar { get; set; }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            estadoCancelar = 1;
            this.Close();
        }

        public Int32 estadoBotones { get; set; }

        private void btnBuscarPedido_Click(object sender, EventArgs e)
        {
            pedidoBL = new PedidoBL();
            if (estadoBotones == 0)
            {
                if (rdbFechas.Checked == true)
                {
                    pedidoBindingSource.DataSource = pedidoBL.RetornarPedidoNoIngresadoByFechas((Convert.ToDateTime(dtpDesde.Value.ToString())).AddDays(-1), Convert.ToDateTime(dtpHasta.Value.ToString()));
                    Pedido = pedidoBL.RetornarPedidoNoIngresadoByFechas(Convert.ToDateTime(dtpDesde.Value.ToString()), Convert.ToDateTime(dtpHasta.Value.ToString()));
                }
                else if (rdbPersonal.Checked == true)
                {
                   
                    pedidoBindingSource.DataSource = pedidoBL.RetornarPedidoNoIngresadoByNombPers(txtNombPers.Text);
                    Pedido = pedidoBL.RetornarPedidoNoIngresadoByNombPers(txtNombPers.Text);
                }
            }
            else
            {
                if (rdbFechas.Checked == true)
                {
                    pedidoBindingSource.DataSource = pedidoBL.GetAllFromPedidoByFechas(Convert.ToDateTime(dtpDesde.Value.ToString()), Convert.ToDateTime(dtpHasta.Value.ToString()));
                    Pedido = pedidoBL.GetAllFromPedidoByFechas(Convert.ToDateTime(dtpDesde.Value.ToString()), Convert.ToDateTime(dtpHasta.Value.ToString()));
                }
                else if (rdbPersonal.Checked == true)
                {
                    pedidoBindingSource.DataSource = pedidoBL.GetAllFromPedidoByNombPers(txtNombPers.Text);
                    Pedido = pedidoBL.GetAllFromPedidoByNombPers(txtNombPers.Text);
                }
                
            }
            txtTotalPedidos.Text = Convert.ToString(Pedido.Sum(d => d.Total));
        
        }

        private void btnActualizarDatos_Click(object sender, EventArgs e)
        {
            pedidoBL = new PedidoBL();
                        
            if (estadoBotones == 0)
            {
                pedidoBindingSource.DataSource = pedidoBL.RetornarPedidoNoIngresado();
                Pedido = pedidoBL.RetornarPedidoNoIngresado();
            }
            else
            {
               pedidoBindingSource.DataSource = pedidoBL.GetAllFromPedido();
               Pedido = pedidoBL.GetAllFromPedido();
            }
            
            txtTotalPedidos.Text = Convert.ToString(Pedido.Sum(d => d.Total));
        }

        public List<Usuario> UsuarioActual { get; set; }

        List<Pedido> Pedido = new List<Entities.Pedido>();

        private void frmGestionarPedido_Load(object sender, EventArgs e)
        {
            pedidoBL = new PedidoBL();                       

            rdbFechas.Checked = true;
            lblPersonal.Visible = false;
            txtNombPers.Visible = false;

            if (estadoBotones == 0)
            {
                btnNuevoPedido.Visible = false;
                btnVerDetallePedido.Visible = false;
                btnSeleccionar.Visible = true;
                pedidoBindingSource.DataSource = pedidoBL.RetornarPedidoNoIngresado();
                Pedido = pedidoBL.RetornarPedidoNoIngresado();
            }
            else
            {
                btnNuevoPedido.Visible = true;
                btnVerDetallePedido.Visible = true;
                btnSeleccionar.Visible = false;
                pedidoBindingSource.DataSource = pedidoBL.GetAllFromPedido();
                Pedido = pedidoBL.GetAllFromPedido();
            }
            
            txtTotalPedidos.Text = Convert.ToString(Pedido.Sum(d => d.Total));      
        }

        public Pedido CurrentPedido
        {
            get { return pedidoBindingSource.Current as Pedido; }
            set
            {
                pedidoBindingSource.DataSource = value;
            }
        }
        private Pedido current;

        public Pedido Current
        {
            get { return current; }
            set { current = value; }
        }


        private void GetCurrent()
        {
            Pedido selected = (Pedido)pedidoBindingSource.Current;

            if (selected != null)
            {
                Current = selected;
            }
        }

        
        public List<DetallePedido> DetallePedido { get; set; } 

        private void btnVerDetallePedido_Click(object sender, EventArgs e)
        {
            frmDetallarPedido detpe = new frmDetallarPedido();
            detpe.CurrentPedido = pedidoBindingSource.Current as Pedido;
            proveedorBL = new ProveedorBL();
            detpe.CurrentProveedor = proveedorBL.GetFromProveedorByDescripcion(CurrentPedido.Raz_soc);
            enlazar = new EnlazarPedidoyDetalle();
            detpe.DetallePedido = enlazar.RetornarProductos(CurrentPedido.Id);
            detpe.CurrentUsuario = new Usuario();
            detpe.CurrentUsuario.Nomb_Usuario = CurrentPedido.Nombre_Pers;
            detpe.CurrentUsuario.Cod_Personal = CurrentPedido.PersonalId;
            detpe.ShowDialog();
        }
        private void btnSeleccionar_Click(object sender, EventArgs e)
        {
            CurrentPedido = pedidoBindingSource.Current as Pedido;
            GetCurrent();
            enlazar = new EnlazarPedidoyDetalle();
            DetallePedido = enlazar.RetornarProductos(CurrentPedido.Id);
            Close();
        }

        private void rdbPersonal_CheckedChanged(object sender, EventArgs e)
        {
            if (rdbPersonal.Checked == true)
            {
                lblDesde.Visible = false;
                lblHasta.Visible = false;
                dtpDesde.Visible = false;
                dtpHasta.Visible = false;
                txtNombPers.Visible = true;
                lblPersonal.Visible = true;
            }
            else if (rdbFechas.Checked == true)
            {
                lblDesde.Visible = true;
                lblHasta.Visible = true;
                dtpDesde.Visible = true;
                dtpHasta.Visible = true;
                txtNombPers.Visible = false;
                lblPersonal.Visible = false;
            }
        }       
    }
}
